package done.easy_001_100;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import static com.study.util.LogUtil.info;

/**
 * 66. Plus One
 * <p>
 * 给定一个由整数组成的非空数组所表示的非负整数，在该数的基础上加一。
 * 最高位数字存放在数组的首位， 数组中每个元素只存储一个数字。
 * 你可以假设除了整数 0 之外，这个整数不会以零开头。
 * <p>
 * 示例 1:
 * 输入: [1,2,3]
 * 输出: [1,2,4]
 * 解释: 输入数组表示数字 123。
 * <p>
 * 将一个数字的每个位上的数字分别存到一个一维向量中，最高位在最开头，
 * 我们需要给这个数字加一，即在末尾数字加一，如果末尾数字是9，那么则会有进位问题，
 * 而如果前面位上的数字仍为9，则需要继续向前进位。具体算法如下：首先判断最后一位是否为9，
 * 1. 若不是，直接加一返回，若是，则该位赋0，再继续查前一位，同样的方法，知道查完第一位。
 * 如果第一位原本为9，加一后会产生新的一位，那么最后要做的是，查运算完的第一位是否为0，
 * 2. 如果是，则在最前头加一个1。
 *
 * @author 大硕
 * 2019-03-23 10:54 AM
 **/
@Slf4j
public class PlusOne {

    public int[] plusOne(int[] val) {
        // 190323 first
        // 190416 second 用了两次
        // 200118 third 看了答案才做出来
        return null;
    }

    @Test
    public void test() {
        int[] nums = new int[]{8, 9, 9};
        info(plusOne(nums));
    }
}




























/*
public int[] plusOne(int[] digits) {
    int n = digits.length;
    for (int i = n - 1; i >= 0; i--) {
        if (digits[i] < 9) {
            digits[i]++;
            return digits;
        }
        digits[i] = 0;
    }
    int[] res = new int[n + 1];
    res[0] = 1;
    return res;
}
*/
